table of contents
sed(1) | 2007-10-27-16:31 | sed(1) |
Назва ¶
sed - потоковий редактор (Stream EDitor)
Стислий огляд ¶
sed [-n] [-V] [--quiet] [--silent] [--version] [--help] [-e script] [--expression=script] [-f script-file] [--file=script-file] [script-if-no-other-script] [file...]
Опис ¶
sed являється потоковим редактором. Потоковий редактор використовується для здійснення базових трансформувань ввідного потоку (файлу або вводу через конвеєр). Хоч і в чомусь подібний на редактори, що дозволяють редагування за сценарієм (такі як ed(1), наприклад), sed працює шляхом тільки одноразового проходження через ввід, а отже ефективніший. Але здатність sed фільтрувати текст, що надійшов з конвеєру, виділяє його серед інших типів редакторів.
sed можна викликати з наступними опціями:
- -n, --quiet, --silent
-
Пригнічує звичайний вивід. - -e script, --expression=script
-
Додати сценарій script до списку виконуваних команд. - -f script-file, --file=script-file
-
Додати зміст файлу script-file до списку виконуваних команд. - -i[suffix], --in-place[=suffiх]
-
Редагує файли на місці (робить резервні копії, якщо вказано закінчення файлу suffix). - -l N, --line-length=N
-
Вказує бажану довжину завертання рядка для команди l. - -r, --regexp-extended
-
Використає розширені регулярні вирази в сценарії. - -s, --separate
-
Розгляне файли як відокремленні замість одного неперервного потоку. - -u, --unbuffered
-
Завантажить мінімальну кількість даних з ввідних файлів і звільнятиме буфери виводу частіше. - --help
-
Виведе допомогу по вживанню програми. - -V
-
Виведе інформацію про версію програми.Якщо на командному рядкові не вказано опцій -e, --expression, -f або --file, тоді найперший аргумент, що не являється опцією буде взято як сценарій для інтерпретації редактором sed. Решта аргументів вважатимуться назвами файлів; якщо не вказано жодного файлу вводу, тоді читатиметься стандартний ввід.
Огляд команд ¶
Наступне являється стислим оглядом команд sed як довідник для тих, хто вже знає sed; для докладнішого опису слід звернутися до іншої документації (скажімо, докумет у texinfo форматі).
Команди без адреси ¶
- label: Мітка label для команд b та t.
- # comment
-
Коментар comment, що простягнеться до наступного нового рядка (або кінця відрізку сценарію, що слідує за -e). - }
-
Закриваюча дужка блоку { }.
Команди без адреси або з однією адресою ¶
- =
-
Вивести номер поточного рядка. - a \
-
text
Додати текст text, що матиме кожен знак нового рядка екрановано зворотнім слешом. - i \
-
text
Вставити текст text, що матиме кожний знак нового рядка екрановано зворотнім слешом. - q
-
Негайно завершити сценарій sed без подальшої обробки вводу, за винятком, коли не вимкнено автоматичного виводу, поточні рядки буде виведено. - Q
-
Негайно завершити роботу sed-сценарію без обробки додаткового вводу. - r filename
-
Додати текст, прочитаний із файлу filename. - R filename
-
Додати рядок, прочитаний із файлу filename.
Команди, що дозволяють діапазон адрес ¶
- {
-
Розпочинає блок команд (завершується відповідною }). - b label
-
Перескочити до мітки label; якщо мітку опущено, перейде до кінця сценарію. - t label
-
Якщо s/// здійснила вдалу заміну, з тих пір як було прочитано останній рядок вводу і з часу виконання останньої команди t або T, тоді перескочити до мітки label; якщо мітку опущено, перейти до кінця сценарію. - T label
-
Якщо s/// не здійснила вдалої заміни, з тих пір як було прочитано останній рядок вводу і з часу виконання останньої команди t або T, тоді перескочити до мітки label; якщо мітку опущено, перейти до кінця сценарію. - c \
-
text
Замінить обрані рядки на текст text, що матиме кожний знак нового рядка екрановано зворотнім слешом. - d
-
Видалить те що співпало зі зразком, розпочне наступний цикл. - D
-
Видалить до першого знаку нового рядка серед того, що співпало зі зразком. Розпочне наступний цикл, але запобігатиме читанню вводу, якщо залишились дані в області співпадання. - h H
-
Копіює/додає область співпадання до області зберігання. - g G
-
Копіює/додає область зберігання до області співпадання. - x
-
Поміняти місцями область зберігання і область співпадання. - l
-
Оголосити поточний рядок у "візуально-неоднозначній" формі. - n N
-
Прочитати/додати наступний рядок до області співпадання. - p
-
Вивести поточну область співпадання. - P
-
Вивести поточну область співпадання до першого ж знаку нового рядка. - s/regexp/replacement/
-
Спробувати зіставити регулярний вираз regexp із областю співпадання. Якщо вдалося, замінити частину, що співпала виразом replacement . Вираз заміни може містити спеціальний знак &, що вказуватиме на ту частину області співпадання, яка збіглася, і спеціальні керовні послідовності \1 до \9 для посилання на відповідні підвирази що співпали з частинами regexp. - w filename
-
Записати поточну область співпадання до файлу filename. - W filename
-
Записати перший рядок поточної області співпадання до файлу filename. - y/source/dest/
-
Здійснити транслітерацію знаків області співпадання, вказаних у source у відповідні знаки dest.
Адреси ¶
Команди sed можуть бути заданими без адрес, в такому разі команди виконуються для всіх рядків вводу. Якщо задати одну адресу, команду буде виконано тільки для рядків вводу, що співпали з цією адресою. Якщо задати дві адреси, команди буде виконано для діапазону рядків, що співпали з першою до другої адреси, включно. Існує три речі, які варто зауважити щодо діапазонів адрес: синтаксис виглядатиме як addr1,addr2 (тобто адреси потрібно розділити комою); рядок, що відповідає addr1 завжди оброблятиметься, навіть якщо addr2 вказує на попередню адресу; і якщо addr2 - це регулярний вираз, він не зіставлятиметься з рядком, який співпав з addr1.
Після адреси (або діапазону адрес) можна добавити !, що вказуватиме, що команду слід виконати тільки в тому випадку, коли адреса (або діапазон адрес) не співпадає.
Підтримуються наступні типи адрес:
- number
-
Співпаде тільки з рядком номер number. - first~step
-
Співпадатиме з кожною адресою на віддалі step рядків, починаючи з рядком first. Наприклад, "sef -n 1~2p" видрукує всі непарні рядки потоку вводу, тоді як 2~5 співпадатиме з кожним п'ятим рядком, починаючи з другого. (Ця риса являється розширенням.) - $
-
Співпаде з останнім рядком. - /regexp/
-
Співпаде з адресами рядків, що збігаються з регулярним виразом regexp. - \cregexp
-
Співпаде з адресами рядків, що збігаються з регулярним виразом regexp. c може бути будь-яким знаком.sed GNU також підтримує спеціальні 2-адресні форми:
- 0,addr2
-
Розпочати пошук уже в стані "першої адреси, яка вже співпала" до тих пір, доки знайдено addr2. Це аналогічно 1,addr1 за винятком того, що у випадку, коли addr2 співпаде з першим рядком вводу, то 0,addr2 форма буде в кінці діапазону, тоді як 1,addr2 все ще на його початку. - addr1,+N
-
Співпадае з адресою addr1 і наступними N рядками, що слідують за нею. - addr1,~N
-
Співпаде з addr1 рядками, що слідують за нею до рядка, кратного N.
Регулярні вирази ¶
Повинні підтримуватись POSIX.2 BRE, але не повністю через проблеми з ефективністю. Подлідовність \n в регулярних виразах співпадає зі знаком нового рядка, те саме стосується відповідних знаків для \a, \t та інших керівних послідовностей.
Вади ¶
Надсилайте повідомлення про помилки на bonzini@gnu.org. Впевністься, що ви включили слово "sed" десь у полі "Subject:". Також, будь ласка, включіть вивід команди "sed --version" в тілі вашого повідомлення, якщо це можливо.
Дивіться також ¶
awk(1), ed(1), grep(1), tr(1), perlre(1), sed.info, будь-які з різноманітних книжок про sed, ЧАПи по sed (http://sed.sf.net/grabbag/tutorials/sedfaq.html), http://sed.sf.net/grabbag/.
Повна документація по sed підтримується як посібник Texinfo. Якщо програми info і sed встановлено на вашій системі, команда
info sed
2007-10-27-16:31 | © 2005-2007 DLOU, GNU FDL |